home *** CD-ROM | disk | FTP | other *** search
- This is a subset of the documentation. To use this driver you MUST have the
- full package from:
-
- Internet:
- =========
-
- ftp.ucsd.edu:/hamradio/packet/tcpip/incoming/z8530drv-1.8.dl1bke.tar.gz
-
- and various mirrors (i.e. nic.switch.ch)
-
- AX.25 BBS
- =========
-
- UNIX @ DB0ACH.#NRW.DEU.EU, subject: Z8530D18.Pxx/Pyy
-
- (AX.25 call: DB0ACH-8)
-
- and various BBS that received the file through AUTO7P or 7PSERV
- with the filename Z8530D18.TGZ
-
-
- ---------------------------------------------------------------------------
-
- !! Version 1.8
- !!
- !! Deutscher Text siehe scc_ger.doc
- !!
- !! perhaps somebody could correct the English documentation (grammar,
- !! spelling)?
- !!
- !! BTW: REAL programmers don't document...
- !!
-
-
- SCC.C - Linux driver for Z8530 based HDLC cards for AX.25
-
- ********************************************************************
-
- (c) 1994 by Joerg Reuter DL1BKE
-
- portions (c) 1994 Hans Alblas PE1AYX
- and (c) 1993 Guido ten Dolle PE1NNZ
-
- for the complete copyright notice see >> Copying.Z8530DRV <<
-
- ********************************************************************
-
-
- 0. Installation of the package
- ==============================
-
- Run SCC-Install. If one (or more) of the patches fails PLEASE consult
- chapter 2 (and READ IT of course!)
-
-
-
- 1. Initialization and attachment of the channels
- ================================================
-
- To use the driver, 3 steps must be performed:
-
- 1. Global initialization of the driver in the kernel
- 2. Setup of parameters with sccinit
- 2. Attachment of each channel in the packet software
-
- The global initialization is needed to reset all SCCs and to
- install a common interrupt handler. Also, the hardware addresses
- of the chips are defined in this step. In the second step, each
- channel is set up for the intended use.
-
-
-
- 1.1. Initialization
- ===================
-
- Initialization of the hardware is performed by setting the defines and
- variables in the file "/linux/drivers/char/scc_config.h". You can change
- a number of parameters.
-
-
-
- ################################################################################################
- # For OptoSCC card e.g:
- #
-
- int Nchips = 2 ; /* number of chips */
- io_port Vector_Latch = 0x168 ; /* addr. of INTACK-Latch (0 for poll mode)
- */
- int Ivec = 9 ; /* interrupt vector */
- long Clock = 4915200 ; /* frequency of the scc clock */
- char Pclk = 1 ; /* use PCLK (1) or RTxC (0) */
- char Board = PA0HZP ; /* what type of SCC card do you use? */
- int Option = 0 ; /* command for extra hardware */
- io_port Special_Port = 0 ; /* port address for special hardware */
- /* (for EAGLE, PC100, PRIMUS, DRSI) */
-
- /* ^ never remove the semicolon !! */
-
-
- /* Channel A B Chip */
- /* ============ ======== */
- /* Control ports: */
-
- io_port SCC_ctrl[MAXSCC * 2] = {0x152, 0x150, /* ...one... */
- 0x156, 0x154, /* ...two... */
- 0, 0, /* ...three... */
- 0, 0}; /* ...four... */
-
-
- /* Data ports: */
-
- io_port SCC_data[MAXSCC * 2] = {0x153, 0x151, /* ...one... */
- 0x157, 0x155, /* ...two... */
- 0, 0, /* ...three... */
- 0, 0}; /* ...four... */
-
-
- /* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
-
- /* Chip */
- /* ======== */
- int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
- 0, /* ...two... */
- 0, /* ...three... */
- 0}; /* ...four... */
-
- /* some useful #defines. You might need them or not */
-
- #define VERBOSE_BOOTMSG 1
- #undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
- #undef SCC_LDELAY /* slow it even a bit more down */
- #undef DONT_CHECK /* don't look if the SCCs you specified are available */
-
-
- /*********** END OF CONFIGURATION PARAMETERS ********************************************/
-
-
-
-
- ################################################################################################
- # For Baycom (U)SCC card e.g:
- #
-
- int Nchips = 2 ; /* number of chips */
- io_port Vector_Latch = 0 ; /* addr. of INTACK-Latch (0 for poll mode) */
- int Ivec = 7 ; /* interrupt vector */
- long Clock = 4915200 ; /* frequency of the scc clock */
- char Board = BAYCOM ; /* what type of SCC card do you use? */
- int Option = 0 ; /* command for extra hardware */
- io_port Special_Port = 0 ; /* port address for special hardware */
- /* (for EAGLE, PC100, PRIMUS, DRSI) */
-
- /* ^ never remove the semicolon !! */
-
-
-
- /* Channel A B Chip */
- /* ============ ======== */
- /* Control ports: */
-
- io_port SCC_ctrl[MAXSCC * 2] = {0x304, 0x305, /* ...one... */
- 0x306, 0x307, /* ...two... */
- 0, 0, /* ...three... */
- 0, 0}; /* ...four... */
-
- /* Data ports: */
-
- io_port SCC_data[MAXSCC * 2] = {0x300, 0x301, /* ...one... */
- 0x302, 0x303, /* ...two... */
- 0, 0, /* ...three... */
- 0, 0}; /* ...four... */
-
-
- /* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
-
- /* Chip */
- /* ======== */
- int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
- 0, /* ...two... */
- 0, /* ...three... */
- 0}; /* ...four... */
-
- /* some useful #defines. You might need them or not */
-
- #define VERBOSE_BOOTMSG 1
- #undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
- #undef SCC_LDELAY /* slow it even a bit more down */
- #undef DONT_CHECK /* don't look if the SCCs you specified are available */
-
- After you changed a parameter you have to recompile a new kernel image file.
-
- The channel number ranges from 0 to (2 * Nchips) - 1,
- where Nchips is the number of chips.
-
- The crystal clock is specified as 4.9152 MHz. Other frequencies
- can be used, and this parameter should be adjusted accordingly.
-
-
- You can define your scc type with Board
-
- SCC type value
- ---------------------------------
- PA0HZP SCC card PA0HZP
- EAGLE card EAGLE
- PC100 card PC100
- PRIMUS-PC (DG9BL) card PRIMUS
- BayCom (U)SCC card BAYCOM
-
-
- NOTE:
- =====
-
- If you only know the parameters for the PE1CHL driver for DOS,
- run gencfg. It will generate the correct port addresses (I hope).
- Its parameters are exactly the same as the ones you use with
- the "attach scc" command in net, except that the string "init" must
- not appear. Example:
-
- gencfg 2 0x150 4 2 0 1 0x168 9 4915200
-
- will print a short form of scc_config.h for the OptoSCC to stdout.
- ("short" <=> few comments).
-
- gencfg 2 0x300 2 4 5 -4 0 7 4915200 0x10
-
- does the same for the BayCom USCC card. I my opinion it is much easier
- to edit scc_config.h...
-
-
- 1.2 initializing the driver on bootup
- =====================================
-
-
- To setup a number parameters you must run /sbin/sccinit from one
- of your rc.*-files. This has to be done BEFORE the start of
- NET or the ax25attach. Sccinit reads the file /etc/z8530drv.rc
- and sets the MODEM and KISS parameters. A sample file is
- delivered with this package. Change it to your needs:
-
- Each channel definition is divided into three sections. An
- example for /dev/sc1:
-
- # DEVICE
-
- device /dev/sc1 # the device for the following params
-
- # MODEM
-
- speed 1200 # the default baudrate
- clock dpll # clock source:
- # dpll = normal halfduplex operation
- # external = MODEM provides own Rx/Tx clock
- # divider = use fullduplex divider if
- # installed (1)
- mode nrzi # HDLC encoding mode
- # nrzi = 1k2 MODEM, G3RUH 9k6 MODEM
- # nrz = DF9IC 9k6 MODEM
- # KISS (Layer 1)
-
- txdelay 36 # (see chapter 1.4)
- persist 64
- slot 8
- tail 8
- fulldup 0
- wait 12
- min 3
- maxkey 7
- idle 3
- maxdef 120
- group 0
- txoff off
- softdcd on
- slip off
-
- The order WITHIN these sections is unimportant. The order OF these
- sections IS important. The MODEM parameters are set with the first
- recognized KISS paramer...
-
- Please note that you can initialize the board only once after boot.
- You can change all paramters but "mode" and "clock" later with the
- Sccparam program or through KISS. Just to avoid securety holes...
-
- (1) this divider is usually mounted on the SCC-PBC (PA0HZP) or not
- present at all (BayCom). It feeds back the output of the DPLL
- (digital pll) as transmit clock. Using this mode without a divider
- installed will normally result in keying the transceiver until
- maxkey expires --- of course without sending anything (useful).
-
-
- 1.3. Attach commands
- ====================
-
- When the linux has startup, the SCC driver has been initialized,
- you can attach the channels in your packet software. This is done
- by open the scc devices by using the attach asy command.
- The SCC-drivers emulates the scc devices as serial asy ports,
- this means e.g. that the baudrate can be set in the attach command.
-
-
- Example Wampes:
-
- #############################################################################################
- # Wampes device attach
- # NOTE: Interfacename and the device must be the same!!
- # Usage: attach asy 0 0 slip|vjslip|ax25ui|ax25i|nrs|kissui <label> 0 <mtu> <speed> [ip_addr]
- #
- attach asy 0 0 kissi sc1 256 256 1200 # Attach SCC channel 1 in 1200 baud
- attach asy 0 0 kissi sc2 256 256 1200 # Attach SCC channel 2 in 1200 baud
- attach asy 0 0 kissui sc3 256 256 38400 # Attach SCC channel 3 in 38400 baud
- attach asy 0 0 kissui sc4 256 256 9600 # Attach SCC channel 4 in 9600 baud
- # ^
- # for WAMPES 921229 use here: ax25
- #
-
- Example JNOS:
-
- ############################################
- # JNOS device attach
- #
- #attach asy sc1 0 ax25 sc1 256 256 1200
- #attach asy sc2 0 ax25 sc2 256 256 1200
- #attach asy sc3 0 ax25 sc3 256 256 300
- #attach asy sc4 0 ax25 sc4 256 256 4800
- #
- #
-
-
- It allows AX.25 communication without a TNC. Only a MODEM is
- needed. The parameters have the same meaning as in KISS mode.
- In fact, the AX.25 mode is emulating an extended KISS TNC, so
- the same commands can be used to set the parameters of the
- interface (see below).
-
- To be able to run fullduplex using an SCC in AX.25 mode, an
- external divider must be available, that divides the baudrate
- generator clock available on the TRxC pin by 32, and puts the
- resulting signal on the RTxC pint of the same channel of the SCC.
- Such a divider is not necessary for normal CSMA packet radio
- operation, but interrupt overhead is slightly reduced if you
- still install it.
-
-
-
- 1.4. Displaying SCC Parameters:
- ===============================
-
- Once a SCC channel has been attached, the parameter settings and
- some statistic information can be shown using the param program:
-
- dl1bke-u:~$ sccstat /dev/sc1
-
- Parameters:
-
- speed : 1200 baud
- txdelay : 36
- persist : 255
- slottime : 0
- txtail : 8
- fulldup : 1
- waittime : 12
- mintime : 3 sec
- maxkeyup : 7 sec
- idletime : 3 sec
- maxdefer : 120 sec
- group : 0x00
- txoff : off
- softdcd : on
- SLIP : off
-
- Status:
-
- HDLC Z8530 Interrupts Queues
- -----------------------------------------------------------------------
- Sent : 273 RxOver : 0 RxInts : 125074 RxQueue : 0
- Received : 1095 TxUnder: 0 TxInts : 4684 TxQueue : 0
- RxErrors : 1591 ExInts : 11776
- KissErrors : 0 SpInts : 1503 NoSpace : 0
- Tx State : idle
-
- Memory allocated:
-
- Total : 1
- RxAlloc: 0
- TxAlloc: 1
-
-
- The status info shown is:
-
- Sent - number of frames transmitted
- Received - number of frames received
- RxErrors - number of receive errors (CRC, ABORT)
- KissErrors - number of KISS errors (should be zero...)
- Tx State - status of the Tx interrupt handler: idle/busy/active/tail (2)
- RxOver - number of receiver overruns
- TxUnder - number of transmitter underruns
- RxInts - number of receiver interrupts
- TxInts - number of transmitter interrupts
- EpInts - number of receiver special condition interrupts
- SpInts - number of external/status interrupts
- RxQueue - number of received packets enqueued for this channel
- TxQueue - number of packets enqueued for Tx
- NoSpace - number of times the receiver buffer pool was found empty
-
-
- An overrun is abnormal. If lots of these occur, the product of
- baudrate and number of interfaces is too high for the processing
- power of you computer. If "Space" errors occur, specify a higher
- number of buffers in the "scc.h" file.
-
-
- 1.5 Setting Parameters
- ======================
-
-
- The setting of parameters of the emulated KISS TNC is done in the
- same way in the SCC driver. You can change parameters by using
- the command param in NET or NOS
-
- param <iface> <paramname> <value>
-
- or use the program "sccparam":
-
- sccparam <device> <paramname> <decimal-|hexadecimal value>
-
- You can change the following parameters:
-
- param : value
- ------------------------
- speed : 1200
- txdelay : 36
- persist : 255
- slottime : 0
- txtail : 8
- fulldup : 1
- waittime : 12
- mintime : 3
- maxkeyup : 7
- idletime : 3
- maxdefer : 120
- group : 0x00
- txoff : off
- softdcd : on
- SLIP : off
-
-
- The parameters have the following meaning:
-
- speed:
- The baudrate on this channel in bits/sec
-
- Example: sccparam /dev/sc4 speed 9600
-
- txdelay:
- The delay (in units of 10ms) after keying of the
- transmitter, until the first byte is sent. This is usually
- called "TXDELAY" in a TNC. When 0 is specified, the driver
- will just wait until the CTS signal is asserted. This
- assumes the presence of a timer or other circuitry in the
- MODEM and/or transmitter, that asserts CTS when the
- transmitter is ready for data.
- A normal value of this parameter is 30-36.
-
- Example: sccparam /dev/sc1 txd 20
-
- persist:
- This is the probability that the transmitter will be keyed
- when the channel is found to be free. It is a value from 0
- to 255, and the probability is (value+1)/256. The value
- should be somewhere near 50-60, and should be lowered when
- the channel is used more heavily.
-
- Example: sccparam /dev/sc3 persist 20
-
- slottime:
- This is the time between samples of the channel. It is
- expressed in units of 10ms. About 200-300 ms (value 20-30)
- seems to be a good value.
-
- Example: sccparam /dev/sc1 slot 20
-
- tail:
- The time the transmitter will remain keyed after the last
- byte of a packet has been transferred to the SCC. This is
- necessary because the CRC and a flag still have to leave the
- SCC before the transmitter is keyed down. The value depends
- on the baudrate selected. A few character times should be
- sufficient, e.g. 40ms at 1200 baud. (value 4)
- The value of this parameter is in 10ms units.
-
- Example: sccparam /dev/sc3 4
-
- full:
- The full-duplex mode switch. This can be one of the folowing
- values:
-
- 0: The interface will operate in CSMA mode (the normal
- half-duplex packet radio operation)
- 1: Fullduplex mode, i.e. the transmitter will be keyed at
- any time, without checking the received carrier. It
- will be unkeyed when there are no packets to be sent.
- 2: Like 1, but the transmitter will remain keyed, also
- when there are no packets to be sent. Flags will be
- sent in that case, until a timeout (parameter 10)
- occurs.
-
- Example: sccparam /dev/sc1 fulldup off
-
- wait:
- The initial waittime before any transmit attempt, after the
- frame has been queue for transmit. This is the length of
- the first slot in CSMA mode. In fullduplex modes it is
- set to 0 for maximum performance.
- The value of this parameter is in 10ms units.
-
- Example: sccparam /dev/sc2 wait 4
-
- maxkey:
- The maximal time the transmitter will be keyed to send
- packets, in seconds. This can be useful on busy CSMA
- channels, to avoid "getting a bad reputation" when you are
- generating a lot of traffic. After the specified time has
- elapsed, no new frame will be started. Instead, the trans-
- mitter will be switched off for a specified time (parameter
- min), and then the selected algorithm for keyup will be
- started again.
- The value 0 as well as "off" will disable this feature,
- and allow infinite transmission time.
-
- Example: sccparam /dev/sc1 maxk 20
-
- min:
- This is the time the transmitter will be switched off when
- the maximum transmission time is exceeded.
-
- Example: sccparam /dev/sc4 min 10
-
- idle
- This parameter specifies the maximum idle time in fullduplex
- 2 mode, in seconds. When no frames have been sent for this
- time, the transmitter will be keyed down. A value of 0 is
- has same result as the fullduplex mode 1. This parameter
- can be disabled.
-
- Example: sccparam /dev/sc3 idle off # transmit forever
-
- maxdefer
- This is the maximum time (in seconds) to wait for a free channel
- to send. When this timer expires the transmitter will be keyed
- IMMEDIATLY. If you love to get trouble with other users you
- should set this to a very low value ;-)
-
- Example: sccparam /dev/sc1 maxdefer 240 # 2 minutes
-
-
- txoff:
- When this parameter has the value 0, the transmission of packets
- is enable. Otherwise it is disabled.
-
- Example: sccparam /dev/sc3 txoff on
-
- group:
- It is possible to build special radio equipment to use more than
- one frequency on the same bad, e.g. using several receivers and
- only one transmitter that can be switched between frequencies.
- Also, you can connect several radios that are active on the same
- band. In these cases, it is not possible, or not a good idea, to
- transmit on more than one frequency. The SCC driver provides a
- method to lock transmitters on different interfaces, using the
- "param <interface> group <x>" command. This will only work when
- you are using CSMA mode (parameter full = 0).
- The number <x> must be 0 if you want no group restrictions, and
- can be computed as follows to create restricted groups:
- <x> is the sum of some OCTAL numbers:
-
- 200 This transmitter will only be keyed when all other
- transmitters in the group are off.
- 100 This transmitter will only be keyed when the carrier
- detect of all other interfaces in the group is off.
- 0xx A byte that can be used to define different groups.
- Interfaces are in the same group, when the logical AND
- between their xx values is nonzero.
-
- Examples:
- When 2 interfaces use group 201, their transmitters will never be
- keyed at the same time.
- When 2 interfaces use group 101, the transmitters will only key
- when both channels are clear at the same time. When group 301,
- the transmitters will not be keyed at the same time.
-
- Don't forget to convert the octal numbers into decimal before
- you set the parameter.
-
- Example: (to be written)
-
- softdcd:
- use a software dcd instead of the real one... Useful for a very
- slow squelch.
-
- Example: sccparam /dev/sc1 soft on
-
-
- slip:
- use slip encoding instead of kiss
-
- Example: sccparam /dev/sc2 slip on
-
-
-
- 2. Problems
- ===========
-
- We are poking around in somebody else's code, so everything may change
- from one patchlevel to another... If the patches fail, try the
- following:
-
- 2.1 /linux/drivers/char/Makefile
- ================================
-
- Add "scc.o" to the definition of OBJS and "scc.c" to SRCS
-
-
- 2.2 /linux/include/linux/tty_driver.h
- =====================================
-
- add the following DEFINE:
-
- #define TTY_DRIVER_TYPE_SCC 0x0005
-
-
- 2.3 /linux/drivers/char/tty_io.c
- ================================
-
- in tty_init() add the line
-
- kmem_start=scc_init(kmem_start);
-
- just before "return kmem_start".
-
- 2.4 /linux/arch/i386/config.in
- ==============================
-
- somewhere in that file add:
-
- comment 'Z8530 SCC driver for Amateur Packet Radio'
- bool 'KISS emulator for Z8530 based HDLC cards' CONFIG_SCC y
- comment ''
-
-
-
- 2.5 Other problems
- ==================
-
- If you have tx-problems with your BayCom USCC card please check
- the manufacturer of the 8530. SGS chips have a slightly
- different timing. Try Zilog... I have no information if this
- driver works with baudrates higher than 1200 baud. A solution is
- to write to register 8 instead to the data port, but this won't
- work with the ESCC chips *SIGH!*
-
- I got reports that the driver has problems on some 386-based systems.
- (i.e. Amstrad) Those systems have a bogus AT bus timing which will
- lead to delayed answers on interrupts. You can recognize these
- problems by looking at the output of Sccstat for the suspected
- port. See if it shows under- and overruns you own such a system.
- Perhaps it will help if you simplify the scc_isr() function a bit.
- You'll find a slightly faster version in the files scc_isr_intack
- or scc_isr_novec.
-
-
- Delayed processing of received data: This depends on
-
- - the kernel version
-
- - kernel profiling compiled or not
-
- - the rather slow receiver in tty_io.c
-
- - a high interrupt load
-
- - a high load of the maching --- running X, Xmorph, XV and Povray,
- while compiling the kernel... hmm ... even with 32 MB RAM ... ;-)
-
- - NET's speed itself.
-
-
- Kernel panics (based on excerpts from /linux/README)
-
-
- - if a bug results in a message like
-
- unable to handle kernel paging request at address C0000010
- Oops: 0002
- EIP: 0010:XXXXXXXX
- eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx
- esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx
- ds: xxxx es: xxxx fs: xxxx gs: xxxx
- Pid: xx, process nr: xx
- xx xx xx xx xx xx xx xx xx xx
-
- or similar kernel debugging information on your screen or in your
- system log, please duplicate it *exactly*. The dump may look
- incomprehensible to you, but it does contain information that may
- help debugging the problem. The text above the dump is also
- important: it tells something about why the kernel dumped code (in
- the above example it's due to a bad kernel pointer)
-
- - in debugging dumps like the above, please look up what the EIP value
- means. The hex value as such doesn't help me or anybody else very much:
- it will depend on your particular kernel setup. What you should do is
- take the hex value from the EIP line (ignore the "0010:"), and look it up
- in the kernel namelist to see which kernel function contains the offending
- address.
-
- To find out the kernel function name, you'll need to
-
- less /linux/System.map
-
- This will give you a list of kernel addresses sorted in ascending
- order, from which it is simple to find the function that contains the
- offending address. Note that the address given by the kernel
- debugging messages will not necessarily match exactly with the
- function addresses (in fact, that is very unlikely), so you can't
- just 'grep' the list: the list will, however, give you the starting
- point of each kernel function, so by looking for the function that
- has a starting address lower than the one you are searching for but
- is followed by a function with a higher address you will find the one
- you want. In fact, it may be [IS!] a good idea to include a bit of
- "context" in your problem report, giving a few lines around the
- interesting one.
-
- I included a small program which does this for you. Just call
-
- grep_eip /linux/System.map address
-
- for example: grep_eip /linux/System.map 182f98
-
- - alternately, you can use gdb on a running kernel. (read-only; i.e. you
- cannot change values or set break points.) To do this, first compile the
- kernel with -g; edit arch/i386/Makefile appropriately, then do a "make
- clean". You'll also need to enable CONFIG_PROC_FS (via "make config").
-
- After you've rebooted with the new kernel, do "gdb vmlinux /proc/kcore".
- You can now use all the usual gdb commands. The command to look up the
- point where your system crashed is "l *0xXXXXXXXX". (Replace the XXXes
- with the EIP value.)
-
- gdb'ing a non-running kernel currently fails because gdb (wrongly)
- disregards the starting offset for which the kernel is compiled.
-
-
-
- If you can't solve a problem, send me
-
- - a description of the problem,
- - information on your hardware (computer system, scc board, modem)
- - your kernel version
- - the output of sccstat /dev/sc# ("#" is the No. of the channel)
- - the settings of "speed", "clock" and "mode" for that channel
- in /etc/z8530drv.rc
- - your scc_config.h
-
-
- And always remember:
- The 1.1.* kernel series is for alpha tests -- use at your own risk ;-)
- The 1.2.* series should run reliable. This driver perhaps NOT!
-
- ------------
-
- Example scc_config.h
-
- #include <linux/scc.h>
-
- /********* CONFIGURATION PARAMATERES; PLEASE CHANGE THIS TO YOUR OWN SITUATION **********/
-
- /* SCC hardware parameters */
-
- /* use the following board types:
- *
- * PA0HZP OptoSCC (PA0HZP)
- * EAGLE EAGLE
- * PC100 PC100
- * PRIMUS PRIMUS-PC (DG9BL)
- * DRSI DRSI PC*Packet
- * BAYCOM BayCom (U)SCC
- *
- */
-
- int Nchips = 2 ; /* number of chips */
- io_port Vector_Latch = 0 ; /* addr. of INTACK-Latch (0 for poll mode) */
- int Ivec = 7 ; /* interrupt vector */
- long Clock = 4915200 ; /* frequency of the scc clock */
- char Board = BAYCOM ; /* what type of SCC card do you use? */
- int Option = 0 ; /* command for extra hardware */
- io_port Special_Port = 0 ; /* port address for special hardware */
- /* (for EAGLE, PC100, PRIMUS, DRSI) */
-
- /* ^ never remove the semicolon !! */
-
-
-
- /* Channel A B Chip */
- /* ============ ======== */
- /* Control ports: */
-
- io_port SCC_ctrl[MAXSCC * 2] = {0x304, 0x305, /* ...one... */
- 0x306, 0x307, /* ...two... */
- 0, 0, /* ...three... */
- 0, 0}; /* ...four... */
-
- /* Data ports: */
-
- io_port SCC_data[MAXSCC * 2] = {0x300, 0x301, /* ...one... */
- 0x302, 0x303, /* ...two... */
- 0, 0, /* ...three... */
- 0, 0}; /* ...four... */
-
-
- /* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
-
- /* Chip */
- /* ======== */
- int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
- 0, /* ...two... */
- 0, /* ...three... */
- 0}; /* ...four... */
-
- /* some useful #defines. You might need them or not */
-
- #define VERBOSE_BOOTMSG 1
- #undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
- #undef SCC_LDELAY /* slow it even a bit more down */
- #undef DONT_CHECK /* don't look if the SCCs you specified are available */
-
-
- /* The external clocking, nrz and fullduplex divider configuration is gone */
- /* you can set these parameters in /etc/z8530drv.rc and initialize the */
- /* driver with sccinit */
-
- ---------
-
- I still can't test the DRSI board, but this configuration derived from
- the PE1CHL SCC driver configuration should work:
-
- An example of scc_config.h for
-
- One DRSI board installed:
- =========================
-
- /* gencfg 1 0x300 0x10 2 0 1 0 7 4915200 */
-
- /* file generated by $Id: gencfg.c,v 1.2 1994/11/29 21:42:24 JReuter Exp JReuter $ */
-
- #include <linux/scc.h>
-
- int Nchips = 1;
- io_port Vector_Latch = 0x0;
- int Ivec = 7;
- long Clock = 4915200;
- char Board = PA0HZP;
- int Option = 0;
- io_port Special_Port = 0x0;
-
- io_port SCC_ctrl[MAXSCC * 2] =
- {0x302, 0x300, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-
- io_port SCC_data[MAXSCC * 2] =
- {0x303, 0x301, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-
- /* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
-
- /* Chip */
- /* ======== */
- int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
- 0, /* ...two... */
- 0, /* ...three... */
- 0}; /* ...four... */
-
- #define VERBOSE_BOOTMSG 1
- #undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
- #undef SCC_LDELAY /* slow it even a bit more down */
- #undef DONT_CHECK /* don't look if the SCCs you specified are available */
-
-
-
- Two boards installed:
- =====================
-
- /* file generated by $Id: gencfg.c,v 1.2 1994/11/29 21:42:24 JReuter Exp JReuter $ */
-
- #include <linux/scc.h>
-
- int Nchips = 2;
- io_port Vector_Latch = 0x0;
- int Ivec = 7;
- long Clock = 4915200;
- char Board = PA0HZP;
- int Option = 0;
- io_port Special_Port = 0x0;
-
- io_port SCC_ctrl[MAXSCC * 2] =
- {0x302, 0x300, 0x312, 0x310, 0x0, 0x0, 0x0, 0x0};
-
- io_port SCC_data[MAXSCC * 2] =
- {0x303, 0x301, 0x313, 0x311, 0x0, 0x0, 0x0, 0x0};
-
- /* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
-
- /* Chip */
- /* ======== */
- int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
- 0, /* ...two... */
- 0, /* ...three... */
- 0}; /* ...four... */
-
- #define VERBOSE_BOOTMSG 1
- #undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
- #undef SCC_LDELAY /* slow it even a bit more down */
- #undef DONT_CHECK /* don't look if the SCCs you specified are available */
-
-
-
-
-
- *****************
-
- You m u s t use "clock dpll" in /etc/z8530drv.rc for operation,
- the on-board baudrate generator is not supported.
-
- *****************
-
-
- (mni tnx to Mike Bilow)
-
-